#include "gpio_ctl.h"

//#define CTL_TEST
#ifdef CTL_TEST
static void ctl_gpio_delay(void)
{
	int i = 0;
	for(i=0;i<0xfffff;i++);
}
static void ctl_gpio_test(void)
{
	while(1)
	{
		DEVICE_OPEN();PRE_CHARGE_OPEN();
		ctl_gpio_delay();
		DEVICE_CLOSED();PRE_CHARGE_CLOSED();
		ctl_gpio_delay();
	}
}

#endif 

/**
 * @brief 开关机引脚初始化
 * 
 */
static void gpio_ctl_init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_StructInit(&GPIO_InitStruct); //初始化结构体
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //GPIO输出模式
  GPIO_InitStruct.GPIO_Pin = DEV_STATE_GPIO_Pin;
  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(DEV_STATE_GPIO, &GPIO_InitStruct);
  DEVICE_OPEN();
}

/**
 * @brief 预充电引脚初始化
 * 
 */
static void gpio_pre_charge_init(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;
  GPIO_StructInit(&GPIO_InitStruct); //初始化结构体
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //GPIO输出模式
  GPIO_InitStruct.GPIO_Pin = PRE_CHARGE_GPIO_Pin;
  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(PRE_CHARGE_GPIO, &GPIO_InitStruct);
}

void gpio_ctl_hal_init(void)
{
	gpio_ctl_init();
	gpio_pre_charge_init();
	#ifdef CTL_TEST
	ctl_gpio_test();
	#endif
	
}
void gpio_key_init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_StructInit(&GPIO_InitStruct); //初始化结构体

    //配置按键 start：P2.11
    GPIO_StructInit(&GPIO_InitStruct);        //初始化结构体
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN; //GPIO输入模式
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIO1, &GPIO_InitStruct);
}

uint8_t device_hal_open(void)
{
  DEVICE_OPEN();
  return  0;
}
uint8_t device_hal_close(void)
{
  DEVICE_CLOSED() ;
  return  0;
}
